home *** CD-ROM | disk | FTP | other *** search
- /*--main.h----------------------------------------------------------
- * Main include file for ANIM2PCX.
- * Note: all files editted with tab stops every 4 spaces.
- */
-
- /* ------------------------------------------------------------------------
- * Typedefs for portability.
- */
-
- typedef char BOOL; /* 0==FALSE, 1==TRUE */
- typedef char BYTE; /* signed 8-bit number */
- typedef unsigned char UBYTE; /* unsigned 8-bit number */
- typedef int WORD; /* signed 16-bit number */
- typedef unsigned int UWORD; /* unsigned 16-bit number */
- typedef long LONG; /* signed 32-bit number */
- typedef unsigned long ULONG; /* unsigned 32-bit number */
- typedef void (*ProcHandle)();
-
- /* --- enable argument checking in Microsoft's include files */
- #define LINT_ARGS
-
- /*-----------------------------------------------------------------*/
-
- #ifndef NULL
- #define NULL 0
- #endif
-
- #ifndef FALSE
- #define FALSE 0
- #define TRUE 1
- #endif
-
- #define FAIL 1
- #define SUCCESS 0
-
- #define MAX_INTEGER 32767
-
- #define HIWORD(longValue) ((UWORD)((longValue) >> 16))
- #define LOWORD(longValue) ((UWORD)(longValue))
-
- /* --- this depends on the memory model we're using */
- /* Within the 64 KB data segment. */
- #define NULL_DATAPTR 0
- /* #define NULL_PROCPTR ((BYTE far *) NULL) */
- #define NULL_PROCPTR ((ProcHandle) NULL)
-
- /* --- separate Microsoft "far" ptrs into their segment & offset parts */
- #define FP_SEG(fp) (*((UWORD *)&(fp) + 1))
- #define FP_OFF(fp) (*((UWORD *)&(fp)))
-
- /* --- combine segment & offset into a "far" ptr */
- #define BYTE_FAR_PTR(seg,off) ((BYTE far *)(((LONG)(seg)<<16)+(off)))
- #define WORD_FAR_PTR(seg,off) ((WORD far *)(((LONG)(seg)<<16)+(UWORD)(off)))
-
- /*----------------------------------------------------------------------*/
-
- #define SWAP(a,b) { (a) ^= (b); (b) ^= (a); (a) ^= (b); }
- #define ORDER(a,b) if ((a)>(b)) SWAP((a),(b))
- #define MAX(a,b) ((a)>(b)?(a):(b))
- #define MIN(a,b) ((a)<(b)?(a):(b))
- #define ABS(a) ((a)>0?(a):-(a))
- #define DIV_ROUND(x, d) (((x) + ((d) >> 1)) / (d)) /* ASSUME d > 0. */
- #define EVEN_UP(a) ( ((a)+1) & ~1 )
- /* Even number >= a. */
-
- #define CHECK_DOS(fn) if ((fn) == -1) goto doserr
-
- /* ------------------------------------------------------------------------
- * Graphics data structures.
- */
-
- typedef struct {
- WORD x, y;
- } POINT;
- typedef struct {
- WORD w, h;
- } Dims;
- typedef struct {
- WORD x, y, w, h;
- } Box;
-
- /*
- * kludge for easy access to individual red/green/blue values within a LONG.
- * NOTE: this depends on 808x byte order being low-high.
- */
- typedef struct {
- UBYTE blue, green, red, unused1;
- } LONG_RGB;
-
- /* --- Max # colors visible on screen. */
- #define MAX_COLORS 256
-
- /* --- Max # planes that a bitmap can have. */
- #define MAX_PLANES 4
-
- /* --- BITMAP structure */
- typedef struct {
- WORD width; /* Width in bytes of each row. Must be even. */
- Box box; /* Pixel bounds of bitmap. (x,y == 0.) */
- WORD planes; /* Number of planes. */
- UWORD seg[MAX_PLANES]; /* SEG where each plane is allocated. */
- } BITMAP;
-
- typedef struct {
- BITMAP *bitmap;
- WORD nPlanes; /* used only in FMT_ONLY mode */
- UBYTE xpcolor;
- } MaskBM;
-
- typedef struct {
- UWORD w, h; /* raster width & height in pixels */
- UBYTE nPlanes; /* # source bitplanes */
- } BitMapHeader;
-
- /* --------------------------------------------------------------------------
- * Description of screen format "f" (320 x 200, 256-colors).
- */
- #define ppb 1 /* pixels per byte */
- #define ppb_minus1 0 /* ppb - 1 */
- #define ppb_shift 0 /* 1 << ppb_shift == ppb */
- #define bpp 8 /* bits per pixel */
- #define bpp_minus1 7 /* bpp - 1 */
- #define bpp_shift 3 /* 1 << bpp_shift == bpp */
- #define curDepth 1 /* Single plane in byte-per-pixel format. */
- #define white_color 0xff /* register # for default white. */
-
- /* -----------------------------------------------------------------------
- * Number of chars in an MS-DOS filename or directory (path) name.
- */
- #define FILENAME_ROOT_LENGTH 8
- #define FILENAME_SUFFIX_LENGTH 3
- #define SEQUENCE_ROOT_LENGTH 4 /* XXXX in XXXX0001.PCX, XXXX0002.PCX...*/
- #define SEQUENCE_DIGITS_LENGTH (FILENAME_ROOT_LENGTH - SEQUENCE_ROOT_LENGTH)
- #define FILENAME_LENGTH 12 /* ROOT + '.' + SUFFIX */
- #define PATHNAME_LENGTH 66 /* drive + path (no filename) */
-
- /* -----------------------------------------------------------------------
- * Screen Format "f".
- */
- #define N_COLUMNS 320
- #define N_LINES 200
- #define N_BYTES_IN_BITMAP (N_COLUMNS * N_LINES)
-
- /* -----------------------------------------------------------------------
- * Buffered i/o.
- */
- void OpenIOBuffer(BOOL forWriting);
- void CloseIOBuffer(WORD file);
- WORD GFlush(WORD file);
- LONG GSeek(WORD file, LONG count, WORD seekType);
- WORD GRead(WORD file, UBYTE *buffer, UWORD nBytes);
- WORD GWrite(WORD file, UBYTE *buffer, UWORD nBytes);
-
- /* -----------------------------------------------------------------------
- * Procedures that need to be declared so parameters or return values of
- * correct type.
- */
- WORD far *BMLineStart(BITMAP*, WORD, WORD);
-
- /* --- mnemonic names for Microsoft library functions */
- #define movmem(source,dest,length) memmove(dest,source,length)
- #define setmem(ptr,length,value) memset(ptr,value,length)